/**
 * 媒体文件处理工具
 */

/**
 * 获取媒体预览URL
 * @param {string} encryptedPath - 加密的文件路径
 * @returns {string} 完整的预览URL
 */
export const getMediaUrl = (encryptedPath) => {
  if (!encryptedPath) return ''

  // 如果已经是完整URL，直接返回
  if (encryptedPath.startsWith('http')) {
    return encryptedPath
  }

  // 如果已经包含完整路径，直接返回
  if (encryptedPath.startsWith('/api/quora/attach/media/')) {
    return encryptedPath
  }

  // 如果包含/attach/media/前缀，需要添加代理前缀
  if (encryptedPath.startsWith('/attach/media/')) {
    return encryptedPath
  }

  // 构建完整的预览URL（通过代理）
  return `/api/quora/attach/media/${encryptedPath}`
}

/**
 * 检查是否为图片文件
 * @param {string} fileName - 文件名或扩展名
 * @returns {boolean}
 */
export const isImageFile = (fileName) => {
  if (!fileName) return false
  
  const imageExtensions = ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'svg']
  const ext = fileName.toLowerCase().split('.').pop()
  return imageExtensions.includes(ext)
}

/**
 * 检查是否为视频文件
 * @param {string} fileName - 文件名或扩展名
 * @returns {boolean}
 */
export const isVideoFile = (fileName) => {
  if (!fileName) return false
  
  const videoExtensions = ['mp4', 'avi', 'mov', 'wmv', 'flv', 'webm', 'mkv', 'm4v', '3gp', 'mpeg', 'mpg']
  const ext = fileName.toLowerCase().split('.').pop()
  return videoExtensions.includes(ext)
}

/**
 * 格式化文件大小
 * @param {number} bytes - 文件大小（字节）
 * @returns {string} 格式化后的文件大小
 */
export const formatFileSize = (bytes) => {
  if (!bytes || bytes === 0) return '0 B'
  
  const k = 1024
  const sizes = ['B', 'KB', 'MB', 'GB', 'TB']
  const i = Math.floor(Math.log(bytes) / Math.log(k))
  
  return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i]
}

/**
 * 获取文件类型图标
 * @param {string} fileName - 文件名
 * @returns {string} 图标类名或emoji
 */
export const getFileTypeIcon = (fileName) => {
  if (!fileName) return '📄'

  if (isImageFile(fileName)) return '🖼️'
  if (isVideoFile(fileName)) return '🎥'

  const ext = fileName.toLowerCase().split('.').pop()

  switch (ext) {
    case 'pdf':
      return '📕'
    case 'doc':
    case 'docx':
      return '📘'
    case 'xls':
    case 'xlsx':
      return '📗'
    case 'ppt':
    case 'pptx':
      return '📙'
    case 'txt':
      return '📄'
    case 'zip':
    case 'rar':
    case '7z':
      return '🗜️'
    default:
      return '📄'
  }
}

/**
 * 获取用户头像URL
 * @param {string} avatarPath - 头像路径
 * @param {string} fallback - 备用文本（用户名等）
 * @returns {string} 头像URL
 */
export const getUserAvatar = (avatarPath, fallback = '') => {
  if (avatarPath) {
    return getMediaUrl(avatarPath)
  }

  // 如果没有头像，返回空字符串，让Element Plus的Avatar组件显示fallback文本
  return ''
}

/**
 * 获取默认头像
 * @returns {string} 默认头像URL
 */
export const getDefaultAvatar = () => {
  return '/src/assets/images/default-avatar.png'
}
